/**
 * 
 */
package br.com.devschool.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.devschool.util.BaseEntity;

/**
 * @author ATILLA
 *
 */

@Entity
@Table
public class Matricula extends BaseEntity implements Serializable{

	private static final long serialVersionUID = -7803197166519860189L;
	
	private String 				codigo;
	private Date 				dataCadastro;
	private Aluno 				aluno;
	private Set<Certificado>	certificados;
	
	public Matricula(Integer id, String codigo, Date dataCadastro, Aluno aluno, 
			Set<Certificado>	certificados) {
		super(id);
		this.codigo 		= codigo;
		this.dataCadastro 	= dataCadastro;
		this.aluno 			= aluno;
		this.certificados 	= certificados;
	}
	
	public Matricula() { }

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	@Column(name="data_cadastro")
	@Temporal(TemporalType.DATE)
	public Date getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	@OneToOne
	@JoinColumn(name="id_aluno")
	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	@OneToMany(mappedBy="matricula", fetch = FetchType.EAGER)
	public Set<Certificado> getCertificados() {
		return certificados;
	}

	public void setCertificados(Set<Certificado> certificados) {
		this.certificados = certificados;
	}
	
}
